<template>
    <div class="login">
      <div class="mui-content">
        <form class="mui-input-group">
          <div class="mui-input-row">
            <label>账号</label>
            <input v-model="loginForm.username" type="text" class="mui-input-clear mui-input" placeholder="请输入账号">
          </div>
          <div class="mui-input-row">
            <label>密码</label>
            <input v-model="loginForm.password" type="password" class="mui-input-clear mui-input" placeholder="请输入密码">
          </div>
        </form>
        <div class="mui-content-padded">
          <button @click="login" type="button" class="mui-btn mui-btn-block mui-btn-primary">登录</button>
          <div class="link-area"><a @click="register">还没有账号？前往注册</a></div>
        </div>
      </div>
    </div>
  </template>
  
  <script>
  export default {
    data() {
      return {
        loginForm: {
          username: '',
          password: '',
        },
      };
    },
    methods: {
  login() {
    // 检查账号和密码是否为空
    if (this.loginForm.username === '' || this.loginForm.password === '') {
      this.$toast('账号或密码不能为空');
      return;
    }

    // 打开加载指示器
    this.$indicator.open({
      text: '登录中...',
    });

    // 发送登录请求
    this.$http.post('login', this.loginForm)
      .then((res) => {
        // 关闭加载指示器
        this.$indicator.close();

        // 处理响应
        if (res.data.code === 0) {
          // 登录失败，显示错误信息
          this.$toast(res.data.msg || '登录失败');
        } else {
          // 登录成功
          this.$store.commit('user/setUser', res.data.data); // 将用户信息保存到 Vuex
          this.$auth.setAuthorization(res.data.data.session_id)
          this.$toast(res.data.msg); // 显示登录成功的提示信息
          this.$router.replace({ name: 'user' }); // 跳转到用户页面
        }
      })
      .catch((error) => {
        // 关闭加载指示器
        this.$indicator.close();

        // 请求失败，提示用户
        this.$toast('登录失败，请稍后重试');
        console.error('登录失败:', error);
      });
  },
  register() {
    this.$router.push({ name: 'register' });
  },
}
  };
  </script>
  
  <style lang="scss" scoped>
  .mui-input-group {
    margin-top: 10px;
    background-color: transparent;
  }
  .mui-input-group label {
    width: 22%;
  }
  .mui-input-row:last-child {
    background: #fff;
  }
  .mui-input-row {
    margin-top: 20px;
    background: #fff;
  }
  .mui-input-row label~input,
  .mui-input-row label~select,
  .mui-input-row label~textarea {
    width: 78%;
  }
  .link-area {
    display: block;
    margin-top: 25px;
    text-align: center;
  }
  .mui-content-padded {
    margin-top: 30px;
  }
  </style>